package com.song.article.service;

import com.song.pojo.Category;
import com.song.pojo.bo.NewArticleBO;
import com.song.utils.PagedGridResult;

import java.util.Date;

public interface ArticleService {

    /**
     * 文章发布
     * @param newArticleBO
     * @param category
     */
    public void createArticle(NewArticleBO newArticleBO, Category category);

    /**
     * (测试)将定时发布改为即时发布
     */
    public void updateAppointToPublish();

    /**
     * MQ根据文章id将定时发布改即时发布
     */
    public void updateArticleToPublish(String articleId);

    /**
     * 查询用户发布的所有文章列表
     * @param userId
     * @param keyword
     * @param status
     * @param startDate
     * @param endDate
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult queryMyArticleList(String userId,
                                              String keyword,
                                              Integer status,
                                              Date startDate,
                                              Date endDate,
                                              Integer page,
                                              Integer pageSize);

    /**
     * 更改文章状态
     */
    public void updateArticleStatus(String articleId, Integer pendingStatus);

    /**
     * 关联文章信息和gridfs中html文件id(Mongo主键id)
     */
    public void updateArticleToGridFS(String articleId, String articleMongoId);

    /**
     * 查询所有文章列表
     * @param status
     * @param page
     * @param pageSize
     * @return
     */
    public PagedGridResult queryAllArticleList(Integer status,
                                               Integer page,
                                               Integer pageSize);

    /**
     * 删除文章
     */
    public void deleteArticle(String userId, String articleId);

    /**
     * 撤回文章
     */
    public void withdrawArticle(String userId, String articleId);

}
